package pers.ijfxu.testngext.dataprovider;

import org.testng.Assert;

import pers.ijfxu.testngext.dataprovider.impl.ExcelBeanIterator;
import pers.ijfxu.testngext.dataprovider.impl.ExcelIterator;
import pers.ijfxu.testngext.dataprovider.impl.TxtBeanIterator;
import pers.ijfxu.testngext.dataprovider.impl.TxtIterator;

import java.util.Iterator;

/**
 * 数据文件迭代器工场
 *
 * @author ijfxu  
 * @since 2021/1/27 14:06
 */
public class IteratorFactory {
    /**
     * 根据文件后缀获取对应的迭代器
     *
     * @param filePath 数据文件绝对路径
     * @return java.util.Iterator 文本迭代器对象
     * @author ijfxu 
     * @since 2021/1/27 14:06
     */
    public static Iterator<Object[]> getIterator(String filePath) {
        if (filePath.endsWith(".txt")) {
            return new TxtIterator(filePath);
        } else if (filePath.endsWith(".xlsx")) {
            return new ExcelIterator(filePath);
        }
        Assert.fail("暂时不支持读取该格式文件:" + filePath);
        return null;
    }

    /**
     * 根据文件后缀获取对应的迭代器
     *
     * @param filePath 数据文件绝对路径
     * @param types 需要迭代器对象返回的参数类型
     * @return java.util.Iterator 文本迭代器对象
     * @author ijfxu 
     * @since 2021/1/27 14:06
     */
    public static Iterator<Object[]> getBeanIterator(String filePath, Class<?>... types) {
        if (filePath.endsWith(".txt")) {
            return new TxtBeanIterator(filePath, types);
        } else if (filePath.endsWith(".xlsx")) {
            return new ExcelBeanIterator(filePath, types);
        }
        Assert.fail("暂时不支持读取该格式文件:" + filePath);
        return null;
    }
}
